unit Cad_Carta;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Formulario_Padrao, RDprint, ExtCtrls, ComCtrls, StdCtrls, Buttons,
  TFlatButtonUnit;

type
  TFrmCad_Carta = class(Tfrm_padr)
    Label1: TLabel;
    ed_mensagem: TEdit;
    c_mensagem: TSpeedButton;
    Label2: TLabel;
    ed_texto: TMemo;
    procedure ed_mensagemEnter(Sender: TObject);
    procedure ed_mensagemExit(Sender: TObject);
    procedure ed_mensagemKeyPress(Sender: TObject; var Key: Char);
    procedure FormActivate(Sender: TObject);
    procedure ed_mensagemKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnCancelarClick(Sender: TObject);
    procedure btnGravarClick(Sender: TObject);
    procedure BtnEliminarClick(Sender: TObject);
    procedure c_mensagemClick(Sender: TObject);
    procedure ed_textoEnter(Sender: TObject);
    procedure ed_textoExit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmCad_Carta: TFrmCad_Carta;

implementation

uses dm,biblio,clsCarta, Cons_Carta, menu;
var
  carta : TCarta;

{$R *.DFM}

procedure TFrmCad_Carta.ed_mensagemEnter(Sender: TObject);
begin
  inherited;
 bs.panels[0].text:= 'F2 Consulta';
end;

procedure TFrmCad_Carta.ed_mensagemExit(Sender: TObject);
begin
  inherited;
 bs.panels[0].text:= '';
end;

procedure TFrmCad_Carta.ed_mensagemKeyPress(Sender: TObject;
  var Key: Char);
begin
  inherited;
 if key>=':' then abort;
 if (key>=' ') and (key<='/') then abort;
end;

procedure TFrmCad_Carta.FormActivate(Sender: TObject);
begin
  inherited;
 carta           := TCarta.Create;
 ed_mensagem.text   := carta.Retorna_Ultima;
 carta.free;
 ed_texto.lines.clear;
 btnGravar.Enabled  := false;
 BtnEliminar.Enabled:= false;
 btnCancelar.Enabled:= false;
 btnFechar.Enabled  := true;
 panel1.Enabled     := true;
 panel2.Enabled     := false;
 ed_mensagem.setfocus;
 ed_mensagem.selectall;
end;

procedure TFrmCad_Carta.ed_mensagemKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
 if key=vk_f2 then c_mensagemClick(sender);
 if key=12 then begin
  ed_mensagem.text:= strzero(ed_mensagem.text,3);
  if ed_mensagem.text<>'000' then begin
   carta:= TCarta.Create;
   if not carta.Recuperar(ed_mensagem.text) then
    bs.panels[1].text  := 'Cadastrando'
   else begin
    bs.panels[1].text  := 'Alterando';
    BtnEliminar.enabled:= true;
   end;
   ed_texto.text      := carta.Texto;
   carta.free;
   btnfechar.enabled  := false;
   btngravar.enabled  := true;
   btncancelar.enabled:= true;
   panel1.enabled     := false;
   panel2.enabled     := true;
  end else panel1.setfocus;
 end;
end;

procedure TFrmCad_Carta.btnCancelarClick(Sender: TObject);
begin
  inherited;
 FormActivate(sender);
end;

procedure TFrmCad_Carta.btnGravarClick(Sender: TObject);
begin
  inherited;
 dmint.db.starttransaction;
 try
  carta      := TCarta.Create;
  carta.Texto:= ed_texto.text;
  carta.Gravar(ed_mensagem.text);
  carta.free;
  dmint.db.commit;
  FormActivate(sender);
 except
  dmint.db.rollback;
  showmessage('Erro ao gravar a carta!');
 end;
end;

procedure TFrmCad_Carta.BtnEliminarClick(Sender: TObject);
begin
  inherited;
 if messagedlg('Tem certeza que deseja eliminar a carta atual?',mtconfirmation,[mbyes,mbno],0)=mryes then begin
  dmint.db.starttransaction;
  try
   carta:= Tcarta.Create;
   carta.Excluir(ed_mensagem.text);
   carta.free;
   dmint.db.commit;
   FormActivate(sender);
  except
   dmint.db.rollback;
   showmessage('Erro ao eliminar a carta!');
  end;
 end;
end;

procedure TFrmCad_Carta.c_mensagemClick(Sender: TObject);
begin
  inherited;
  Executa(TFrmCons_Carta,self);
  ed_mensagem.text := xcod_carta;
end;

procedure TFrmCad_Carta.ed_textoEnter(Sender: TObject);
begin
  inherited;
  Application.OnMessage := nil;
end;

procedure TFrmCad_Carta.ed_textoExit(Sender: TObject);
begin
  inherited;
  Application.OnMessage := frmMenu.Processkey;
end;

end.
